package com.itheima;

import com.itheima.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @author Xiao
 * @date 2021/8/22
 */
public class MybatisDemo {
    /**
     * mybatis快速入门测试类
     */
    public static void main(String[] args) throws IOException {
        //1. 加载mybatis的核心配置文件，获取SqlSessionFactory对象（只写一次，不常用，cv即可）
        //1.1 定义配置文件路径
        String resource = "mybatis-config.xml";
        //1.2 通过mybatis的Resources类的静态方法getResourceAsStream()传入字符串路径，返回一个字节输入流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //1.3 通过SqlSessionFactoryBuilder对象调用build()方法将流传进去，返回SqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //2. 获取SqlSession对象，用来执行sql语句
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3. 执行sql语句：通过SqlSession对象调用方法执行
        //3.1 查询所有，调用selectList()方法，传入对应sql语句的名称空间.唯一标识，返回一个集合
        List<User> users = sqlSession.selectList("tb_user.selectAll");
        //3.2 查询单个数据，调用selectOne()方法，返回一个对象
        //Object o = sqlSession.selectOne("sql映射文件中的  名称空间.唯一标识");
        for (User user : users) {
            System.out.println(user);
        }
        //4. 释放资源
        sqlSession.close();
    }
}
